#!/bin/bash

# 配置参数
RETENTION_DAYS=1                   # 保留最近1天的文件
LOG_FILE="/var/log/tmp_clean.log"  # 日志文件路径
LOCK_FILE="/var/run/tmp_clean.lock" # 锁文件路径

# 日志记录函数
log() {
    local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $1"
    echo "$msg" >> "$LOG_FILE"
    # 关键信息同时输出到终端
    [[ "$1" == *inode状态* ]] && echo "$msg"
}

# 创建锁文件防止并发
if [ -e "$LOCK_FILE" ]; then
    log "错误：清理任务已在运行中"
    exit 1
fi
touch "$LOCK_FILE"
trap 'rm -f "$LOCK_FILE"' EXIT

log "===== 开始清理临时文件 ====="

# 记录清理前inode使用情况（终端+日志）
log "清理前inode状态:"
df -i /tmp /var/tmp | tee -a "$LOG_FILE"

# 主清理流程
for target_dir in /tmp /var/tmp; do
    if [ ! -d "$target_dir" ]; then
        log "警告: 目录不存在 - $target_dir"
        continue
    fi
    
    log "清理目录: $target_dir (超过${RETENTION_DAYS}天的文件)"
    
    # 执行清理（带深度限制）
    find "$target_dir" -maxdepth 3 -type f -atime +$RETENTION_DAYS \
        -exec sh -c 'echo "删除: $1" >> "'"$LOG_FILE"'" && rm -f "$1"' sh {} \;
done

# 记录清理后状态（终端+日志）
log "清理后inode状态:"
df -i /tmp /var/tmp | tee -a "$LOG_FILE"

log "===== 清理完成 ====="